<?php
/**
 * Interface zum Db_Connector
 *
 * @author		Joachim Ruf
 * @copyright	Copyright (c) 2003-2010 Loresoft Software (http://www.loresoft.de)
 * @license		http://yapary.loresoft.de/lizenzbedingungen     New BSD License
 *
 * */


class Yapary_Db_Sql_Result Implements Yapary_Db_IResult
{
    private $connection   = NULL;
    private $resId        = NULL;
    private $strQuery     = NULL;
    private $errCode      = NULL;


    function __construct ($_connection, $_resId, $_strQuery, array $_arrAttribute) {
		if (gettype($_resId) !== 'resource') {
		    $this->resId = NULL;
//		    trigger_error('INVALID RESOURCE');
		}

        $this->connection = $_connection;
        $this->resId      = $_resId;
        $this->strQuery   = $_strQuery;
        $this->errCode    = $_arrAttribute['errCode'];
        $this->errMsg     = $_arrAttribute['errMsg'];
    }


    /**
     * Liefert den naechsten Datensatz
     * @return mixed
     * */
    public function getNext () {
		if ($row = @mysql_fetch_object($this->resId)) {
			return $row;
		}

		@mysql_free_result($this->resId);
		return false;
    }


    /**
     * Liefert alle Ergebnisse als Array zurueck
     * @return Array
     * */
    public function getList () {
		if ($row = @mysql_fetch_array($this->resId)) {
			return $row;
		}

		@mysql_free_result($this->resId);
		return false;
    }


    /**
     * Liefert die Anzahl an Eintraege
     * @return int
     * */
    public function getCount () {
	    $count = @mysql_num_rows($this->resId);
	    if ($count == NULL) {
			return 0;
		}

		return (int) $count;
    }


    /**
     * gibt den eingegebenen Sql-Query aus
     * @return string
     * */
    public function getQuery () {
		return $this->strQuery;
	}


    /**
     * Prueft, ob der ausgefuehrte Query fehlerfrei akzeptiert wurde
     * @return bool
     * */
	public function isValid () {
		if ($this->errCode != 0) {
			return false;
		}

		return true;
	}


	/**
	 * gibt den Fehlercode zum Sql-Query aus
	 * @return int
	 * */
	public function getErrCode () {
		return $this->errCode;
	}


	/**
	 * gibt die Fehlermeldung zum Sql-Query aus
	 * @return int
	 * */
	public function getErrMsg () {
		return $this->errMsg;
	}


    /**
     * setzt den Offset neu
     * @param int $_index	: Neuer offset
     * @return bool
     * */
    public function setOffset ($_index = 0) {
        if ($_index < 0) {
            return false;
        }
        if ($_index > $this->getCount()) {
            return false;
        }

        return @mysql_data_seek($this->resId, $_index);
    }

}


?>